/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.viajaconmigo.web.controladores;

import com.viajaconmigo.model.Propuesta;
import com.viajaconmigo.model.Solicitud;
import com.viajaconmigo.web.controladores.util.JSFUtil;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author Pablo
 */
@Named(value = "propuestaControl")
@SessionScoped
public class PropuestaController extends ParentController implements Serializable {
    
    private final static Logger logger = LoggerFactory.getLogger(PropuestaController.class);

    private Integer idPropuesta;
    private Propuesta propuesta;
    private Boolean solicitada;
    private Boolean aceptada;

    private String mensajeSolicitud;

    @Inject
    private UsuarioController usuarioController;

    /**
     * Creates a new instance of PropuestaController
     */
    public PropuestaController() {
        solicitada = null;
        aceptada = null;
    }

    public Integer getIdPropuesta() {
        return idPropuesta;
    }

    public Propuesta getPropuesta() {
        return propuesta;
    }

    public void setPropuesta(Propuesta propuesta) {
        this.propuesta = propuesta;
    }

    public void setIdPropuesta(Integer idPropuesta) {
        this.idPropuesta = idPropuesta;
    }

    public Boolean getAceptada() {
        return aceptada;
    }

    public void setAceptada(Boolean aceptada) {
        this.aceptada = aceptada;
    }

    public Boolean getSolicitada() {
        return solicitada;
    }

    public void setSolicitada(Boolean solicitada) {
        this.solicitada = solicitada;
    }

    public String getMensajeSolicitud() {
        return mensajeSolicitud;
    }

    public void setMensajeSolicitud(String mensajeSolicitud) {
        this.mensajeSolicitud = mensajeSolicitud;
    }

    public void cargaPropuesta(Integer idProp) {
        try {
            idPropuesta = idProp;
            propuesta = propuestaService.getPropuesta(idPropuesta);

            Solicitud solicitud = propuestaService.getSolicitudByNick(usuarioController.getUsuario(), propuesta);
            if (solicitud == null) {
                solicitada = false;
            } else {
                solicitada = true;
                aceptada = solicitud.getAceptada();
            }
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al Cargar la Propuesta",e);
        }
    }

    public boolean showBtInscr() {
        if (solicitada == false || (solicitada == true && aceptada != null && aceptada == false)) {
            return true;
        } else {
            return false;
        }
    }

    public boolean showMsgSolEnv() {
        if (solicitada == true && aceptada == null) {
            return true;
        } else {
            return false;
        }
    }

    public boolean showMenuAport() {
        if (solicitada == true && aceptada != null && aceptada == true) {
            return true;
        } else {
            return false;
        }
    }

    public void sendRequest() {
        try {
            propuestaService.newSolicitud(usuarioController.getUsuario(), propuesta, mensajeSolicitud);
            solicitada = true;
            aceptada = null;
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al crear una Nueva Solicitud",e);
        }
    }

    public String getPlanEcoNombre() {
        String ret = "";
        try {
            //ret = propuestaService.getPlanEcoTrad(propuesta.getPlanEco(), "ES").getNombre();
            ret = i18nManager.getTraduccion(propuesta.getPlanEco(), "ES").getLiteral();
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al obtener el Plan Economico",e);
        }
        return ret;
    }

    public String getPlanEcoDescrip() {
        String ret = "";
        try {
            //ret = propuestaService.getPlanEcoTrad(propuesta.getPlanEco(), "ES").getDescripcion();
            ret = i18nManager.getTraduccion(propuesta.getPlanEco(), "ES").getDescLiteral();
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al obtener el Plan Economico",e);
        }
        return ret;
    }
}
